home *** CD-ROM | disk | FTP | other *** search
/ SGI Varsity Update 1998 August / SGI Varsity Update 1998 August.iso / docs6.4 / relnotes / ftn77_fe / ch4.z / ch4
Text File  |  1998-07-29  |  15KB  |  462 lines

  1.  
  2.  
  3.  
  4.                                                - 1 -
  5.  
  6.  
  7.  
  8.                     7.2.1 Fortran 77 Front-End Release Notes
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                                                - 2 -
  69.  
  70.  
  71.  
  72.                     DDDDooooccccuuuummmmeeeennnntttt NNNNuuuummmmbbbbeeeerrrr 000000007777----1111666655559999----000011110000
  73.  
  74.  
  75.                     4.  _N_e_w__F_e_a_t_u_r_e_s__o_f__T_h_i_s__R_e_l_e_a_s_e
  76.  
  77.                     This chapter contains the differences between
  78.                     this release and the 7.2 release of the MIPSpro
  79.                     Fortran 77 compiler.  It also summarizes the
  80.                     differences between the 7.2 release and the 7.1
  81.                     release of MIPSpro Fortran 77 compiler.
  82.  
  83.  
  84.                     4.1  _N_e_w__F_e_a_t_u_r_e_s__i_n__M_I_P_S_p_r_o__7_._2_._1
  85.  
  86.  
  87.  
  88.                     4.1.1  _O_p_e_n_M_P__S_u_p_p_o_r_t   MIPSpro Fortran 77 7.2.1
  89.                     now supports the OpenMP application programming
  90.                     interface (API) when used in conjunction with
  91.                     the -_m_p flag.  The -_m_p flag enables the
  92.                     processing of the parallel (MP) directives,
  93.                     including the original SGI/PCF directives as
  94.                     well as the OpenMP directives.  To selectively
  95.                     disable one or the other set of directives, add
  96.                     the following -MP option group flag to the -_m_p
  97.                     flag:
  98.  
  99.                     -MP:old_mp=off
  100.                         disable processing of the original SGI/PCF
  101.                         directives, but retain the processing of
  102.                         OpenMP directives.
  103.  
  104.                     -MP:open_mp=off
  105.                         disable processing of the OpenMP directives,
  106.                         but retain processing of the original
  107.                         SGI/PCF directives.
  108.  
  109.  
  110.  
  111.                     You must have libmp from patchSG0002773
  112.                     installed if you plan to work with OpenMP
  113.                     support.
  114.  
  115.                     For more information about OpenMP support in
  116.                     MIPSpro Fortran 77, please refer to the MIPSpro
  117.                     Fortran 77 Programmer's Guide.  For general
  118.                     information about OpenMP please refer to the
  119.                     following web page:
  120.  
  121.                     http://www.openmp.org/
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                                                - 3 -
  135.  
  136.  
  137.  
  138.                     4.2  _-_O_P_T_:_I_E_E_E___c_o_m_p_a_r_i_s_o_n_s_=_n_o_p_t_i_o_n
  139.  
  140.  
  141.                     The -OPT:IEEE_comparisons=n option has been
  142.                     renamed to -OPT:IEEE_NaN_inf=n whose definition
  143.                     under the -OPT option control group is as
  144.                     follows:
  145.  
  146.  
  147.                       IEEE_NaN_inf=n
  148.  
  149.                           IEEE_NaN_inf=ON forces all  operations which might have
  150.                           IEEE-754  NaN or infinity operands to yield results
  151.                           that conform to ANSI/IEEE 754-1985, the IEEE Standard for
  152.                           Binary Floating-point Arithmetic, which specifies
  153.                           standard for NaN and inf operands.  Specify ON or OFF for
  154.                           setting.  The default is IEEE_NaN_inf=OFF.
  155.  
  156.                           IEEE_NaN_inf=OFF produces non-IEEE results for various
  157.                           operations.  For example, x=x is treated as TRUE without
  158.                           executing a test, and x/x will be simplified to 1
  159.                           without dividing.  Turning this option on may suppress
  160.                           many such common optimizations and hurt performance as a
  161.                           result.
  162.  
  163.  
  164.                     For more information please consult the new man
  165.                     page opt(5).
  166.  
  167.  
  168.  
  169.  
  170.                     4.3  _N_e_w__F_e_a_t_u_r_e_s__i_n__M_I_P_S_p_r_o__7_._2_.
  171.  
  172.  
  173.  
  174.                     4.3.1  _R_e_p_a_c_k_a_g_i_n_g__o_f__F_r_o_n_t_-_E_n_d__S_u_b_s_y_s_t_e_m_s   As
  175.                     of the 7.2 release, the MIPSpro Fortran 77
  176.                     front-end subsystems are packaged on their own
  177.                     separate CD. Before installing the MIPSpro
  178.                     Fortran 77 Front-end subsystems you must first
  179.                     install compiler_dev, compiler_eoe, ftn_dev, and
  180.                     ftn_eoe from the IRIX Development Foundation CD
  181.                     (On IRIX 6.5 *_eoe subsystems are on the IRIX
  182.                     Foundation CD).
  183.  
  184.                     Should you desire to use the new 7.2.1 Fortran
  185.                     77 runtime libraries, you must install
  186.                     patchSG0002759.ftn_dev_sw
  187.                     patchSG0002759.ftn_eoe_sw (*.sw64 subsystems are
  188.                     required only for 64-bit operation).
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                - 4 -
  201.  
  202.  
  203.  
  204.                     NOTE:
  205.  
  206.                             Patch 2759 contains both ftn77_eoe and ftn_eoe
  207.                             subsystems.  One set of these subsystems
  208.                             is marked as installable (NA) while the other is
  209.                             marked as not installable (NX).
  210.  
  211.                             When installing patch 2759 on the 7.2.1 and 7.2
  212.                             compiler runtimes containing ftn_eoe,
  213.                             the ftn77_eoe subsystems are displayed as not
  214.                             installable (NX).
  215.  
  216.                             When installing patch 2759 on earlier compilers
  217.                             runtimes containing ftn77_eoe,
  218.                             the ftn_eoe subsystems are displayed as not
  219.                             installable (NX).
  220.  
  221.  
  222.  
  223.  
  224.  
  225.                     4.3.2  _O_p_t_i_o_n__t_o__u_s_e__F_o_r_t_r_a_n__9_0__l_i_b_r_a_r_y   The
  226.                     -_c_r_a_y_l_i_b_s option allows you to use the Fortran
  227.                     90 library, libfortran.so, (based on the Cray
  228.                     FFIO library) to link your program.  Using this
  229.                     option requires installation of Patch 2759
  230.                     (available on the IRIX Development Foundation
  231.                     CD's).  Note that only standard Fortran 77 I/O
  232.                     operations are supported in this release.  If
  233.                     you use any SGI Fortran 77 extensions
  234.                     (particularly ISAM and variable formats) you
  235.                     cannot use the -_c_r_a_y_l_i_b_s option.
  236.  
  237.  
  238.                     4.3.3  _N_e_w__O_p_t_i_o_n_s__a_n_d__D_e_f_a_u_l_t_s   A new
  239.                     -_D_E_B_U_G:_o_p_t_i_o_n control group has been created to
  240.                     allow insertion of code to assist in the
  241.                     debugging of programs.  For example,
  242.                     -_D_E_B_U_G:_d_i_v__c_h_e_c_k=_N replaces -_T_E_N_V:_c_h_e_c_k__d_i_v=_N
  243.                     and the 7.2.1 compiler, by default, inserts code
  244.                     to check for divide by zero (N=1).
  245.  
  246.                     _N_O_T_E:  The default value for -_T_E_N_V:_c_h_e_c_k__d_i_v=_N
  247.                     under MIPSpro 7.1 was N=0 (no checks).
  248.  
  249.                     For more information, please refer to the _f_7_7(1)
  250.                     and _D_E_B_U_G__g_r_o_u_p(5) man pages.
  251.  
  252.                     The -_L_I_S_T: options control group has been
  253.                     enhanced to the create a listing file (.l) that
  254.                     contains the values of all flags  modified,
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                - 5 -
  267.  
  268.  
  269.  
  270.                     directly in the command line, or indirectly as a
  271.                     side effect of other options. For example:
  272.  
  273.                     % f77 -n32 -LIST:options=ON foo.f
  274.  
  275.                     will create foo.l which contains a listing that
  276.                     contains the default values of certain options
  277.                     from the -OPT, -LNO, -TARG and -TENV option
  278.                     control groups.
  279.  
  280.                     The following command:
  281.  
  282.                     % f77 -n32 -LIST:all_options=ON foo.f
  283.  
  284.                     will create foo.l which contains a listing that
  285.                     contains the default values of all options from
  286.                     all of the option control groups.
  287.  
  288.                     For more information, please refer to the _f_7_7(1)
  289.                     man page.
  290.  
  291.  
  292.                     4.3.4  _O_b_s_o_l_e_t_e__O_p_t_i_o_n_s   Several compile-time
  293.                     flags have been obsoleted. These include:
  294.                     -_T_E_N_V:_m_i_s_a_l_i_g_n_e_m_n_t=_N, -_T_E_N_V:_a_l_i_g_n__e_x_t_e_r_n=_N and
  295.                     -_T_E_N_V:_a_l_i_g_n_e_d=_T_R_U_E.  Their use will generate a
  296.                     warning message in both the compiler front-end
  297.                     and backend. For example:
  298.  
  299.                     % f77 -n32 -TENV:misalignment=3 reshape.f
  300.                     Warning: Obsolete option "-TENV:misalignment=3" -- ignored
  301.                     Warning: Obsolete option "-TENV:misalignment=3" -- ignored
  302.  
  303.                     The -_T_E_N_V:_v_a_r_a_r_g_s__p_r_o_t_o_t_y_p_e_s=_T_R_U_E flag has been
  304.                     replaced by -_D_E_B_U_G:_v_a_r_a_r_g_s__p_r_o_t_o_t_y_p_e_s=_T_R_U_E.
  305.  
  306.                     For more information, please refer to the _f_7_7(1)
  307.                     and _D_E_B_U_G__g_r_o_u_p(5) man pages.
  308.  
  309.  
  310.  
  311.                     4.3.5  _F_i_l_l__a_n_d__A_l_i_g_n__D_i_r_e_c_t_i_v_e__S_u_p_p_o_r_t
  312.                     MIPSpro 7.2.1 Fortran 77 supports new types of
  313.                     directives to facilitate padding and alignment
  314.                     of variables within cachelines and pages of
  315.                     memory. They are outlined below.
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                                - 6 -
  333.  
  334.  
  335.  
  336.                     c*$*    fill_symbol (s, L1cacheline)
  337.                     c*$*    fill_symbol (s, L2cacheline)
  338.                     c*$*    fill_symbol (s, page)
  339.                     c*$*    fill_symbol (s, <user-specified-power-of-two>)
  340.                     c*$*    align_symbol (s, L1cacheline)
  341.                     c*$*    align_symbol (s, L2cacheline)
  342.                     c*$*    align_symbol (s, page)
  343.                     c*$*    align_symbol (s, <user-specified-power-of-two>)
  344.  
  345.  
  346.                     The fill_symbol and align_symbol directives take
  347.                     a symbol (i.e. a variable that may be a Fortran
  348.                     COMMON, or an automatic variable, but not a
  349.                     formal and not an element of a structured type
  350.                     like a struct or an array).  The second argument
  351.                     in the directive may be one of the keywords
  352.                     L1cacheline (machine specific first-level cache
  353.                     line size, typically 32 bytes), L2cacheline
  354.                     (machine specific second-level cache line size,
  355.                     typically 128 bytes), page (machine specific
  356.                     page size, typically 16 Kbytes), or a user-
  357.                     specified power-of-two value.
  358.  
  359.                     The align_symbol directive aligns the start of
  360.                     the named symbol at the specified alignment,
  361.                     i.e. the symbol "s" will start at the specified
  362.                     alignment boundary.
  363.  
  364.                     The fill_symbol directive pads the named symbol
  365.                     with additional storage so that the symbol is
  366.                     assured not to overlap with any other data item
  367.                     within the storage of the specified size. The
  368.                     additional padding required is heuristically
  369.                     divided between each end of the specified
  370.                     variable. For instance, a fill_symbol directive
  371.                     for the L1cacheline will guarantee that the
  372.                     specified symbol will not suffer from false-
  373.                     sharing for the L1 cache line.
  374.  
  375.                     For global variables these directives must be
  376.                     specified at the variable definition, and are
  377.                     optional at the declarations of the variable.
  378.  
  379.                     For COMMON block variables these directives are
  380.                     required at each declaration of the COMMON
  381.                     block. Since the directives modify the allocated
  382.                     storage and its alignment for the named symbol,
  383.                     inconsistent directive can lead to undefined
  384.                     results.
  385.  
  386.                     The align_symbol directive is ineffective for
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                                                - 7 -
  399.  
  400.  
  401.  
  402.                     local variables of fixed-size symbols, such as
  403.                     simple scalars or arrays of known size. The
  404.                     directive continues to be effective for stack-
  405.                     allocated arrays of dynamically-determined size.
  406.  
  407.                     A variable cannot have both fill_symbol and
  408.                     align_symbol directives applied to it.
  409.  
  410.  
  411.                     4.3.6  _N_e_w _A_u_t_o_m_a_t_i_c _P_a_r_a_l_l_e_l_i_z_a_t_i_o_n _O_p_t_i_o_n
  412.                     _P_r_o_d_u_c_t   The 7.2 release of the MIPSpro
  413.                     compilers marks a major revision of the auto-
  414.                     parallelizer. The new product incorporates
  415.                     automatic parallelization into the other
  416.                     optimizations performed by the MIPSpro
  417.                     compilers.  Previous versions relied on
  418.                     preprocessors to provide source-to-source
  419.                     conversions prior to compilation. This change
  420.                     provides several benefits to developers:
  421.  
  422.                     Automatic parallelization is integrated with
  423.                     optimizations for single processors.
  424.  
  425.                     A set of options and pragmas consistent with the
  426.                     rest of the MIPSpro compilers.
  427.  
  428.                     Better run-time and compile-time performance.
  429.  
  430.                     For more information, please refer to the
  431.                     auto_p(5) man pages.
  432.  
  433.                     NOTE: In order to run the new automatic
  434.                     parallelization, you must purchase the MIPSpro
  435.                     Auto Parallelization Option (SC4-APO-7.2.1) and
  436.                     install the license for it (FEATURE name string
  437.                     = auto_pp).
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.